package com.duoec.dw.lineage.service.analyser;

import com.alibaba.druid.sql.ast.SQLExpr;
import com.duoec.dw.lineage.dto.MultiTableLineageDto;
import com.duoec.dw.lineage.dto.TableFieldDependencyDto;

import java.util.LinkedHashSet;

/**
 * @author xuwenzhen
 */
public interface HiveExprAnalyser<T extends SQLExpr> {
    /**
     * 获取匹配类型
     *
     * @return 类型
     */
    Class<T> getSqlExprType();

    /**
     * 分析表达式语句
     *
     * @param expr         表达式语句
     * @param fromLineages 当前语句from解析出来的血缘关系
     * @return 此表达式抽取出来的依赖
     */
    LinkedHashSet<TableFieldDependencyDto> analyse(T expr, MultiTableLineageDto fromLineages);
}
